package hitthetable; // 定义包名

// 使用表格查找模式的类
public class MSun_Ton {
    public static void main(String[] args) {
        // 循环遍历1到99的数字
        for (int i = 1; i < 100; i++) {
            // 打印每个数字两个方法的返回结果
            System.out.println(isMSum1(i) + " " + isMSum2(i));
        }
    }

    // 方法：检查一个数字是否可以表示为从1开始的连续整数的和
    public static boolean isMSum1(int n){
        // 循环遍历所有可能的和的起始点
        for(int i = 1; i <= n; i++){
            int sum = i; // 用起始点初始化和
            // 循环遍历所有可能的和的结束点
            for(int j = i + 1; j <= n; j++){
                sum += j; // 将下一个整数加到和中
                if(sum > n){ // 如果和超过数字，跳出循环
                    break;
                }
                if(sum == n){ // 如果和等于数字，返回true
                    return true;
                }
            }
        }
        return false; // 如果没有找到有效的和，返回false
    }

    // 方法：检查一个数字是否是2的幂
    public static boolean isMSum2(int n){
        // 如果数字小于3，它不是2的幂
        if(n < 3){
            return false;
        }
        // 使用位运算检查数字是否是2的幂
        return (n & (n - 1)) != 0;
    }
}
